package co.com.inversiones.xyz.ltda.bl.impl;

import co.com.inversiones.xyz.ltda.bl.UsuarioBl;
import co.com.inversiones.xyz.ltda.dao.RolDao;
import co.com.inversiones.xyz.ltda.dao.SucursalDao;
import co.com.inversiones.xyz.ltda.dao.UsuarioDao;
import co.com.inversiones.xyz.ltda.dto.Rol;
import co.com.inversiones.xyz.ltda.dto.Sucursal;
import co.com.inversiones.xyz.ltda.dto.Usuario;
import co.com.inversiones.xyz.ltda.exception.BlException;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public class UsuarioBLImpl implements UsuarioBl{

	RolDao rolDAO;
	SucursalDao sucursalDAO;
	UsuarioDao usuarioDAO;
	
	public RolDao getRolDAO() {
		return rolDAO;
	}

	public void setRolDAO(RolDao rolDAO) {
		this.rolDAO = rolDAO;
	}

	public SucursalDao getSucursalDAO() {
		return sucursalDAO;
	}

	public void setSucursalDAO(SucursalDao sucursalDAO) {
		this.sucursalDAO = sucursalDAO;
	}

	public UsuarioDao getUsuarioDAO() {
		return usuarioDAO;
	}

	public void setUsuarioDAO(UsuarioDao usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}

	@Override
	public void guardarUsuario(int rol, int sucursal, String nombreResponsable,
			String correo, int telefono, String direccion, String ciudad, String departamento,
			String pais, String pass, String tipoId) throws DaoException,
			BlException {
			
		if(nombreResponsable == null || "".equals(nombreResponsable)){
			throw new BlException("El nombre del responsable no puede ser una valor nulo o vacio");
		}
		
		if(correo == null || "".equals(correo)){
			throw new BlException("El correo no puede ser una valor nulo o vacio");
		}
		
		if(direccion == null || "".equals(direccion)){
			throw new BlException("La direccion no puede ser una valor nulo o vacio");
		}
		
		if(ciudad == null || "".equals(ciudad)){
			throw new BlException("La ciudad no puede ser una valor nulo o vacio");
		}
		
		if(pais == null || "".equals(pais)){
			throw new BlException("El pais no puede ser una valor nulo o vacio");
		}
		
		if(pass == null || "".equals(pass)){
			throw new BlException("El pass no puede ser una valor nulo o vacio");
		}
		
		if(tipoId == null || "".equals(tipoId)){
			throw new BlException("El nombre del responsable no puede ser una valor nulo o vacio");
		}
		
		if("".equals(telefono)){
			throw new BlException("El telefono no puede ser una valor vacio");
		}
		
		Sucursal sucursal02 = sucursalDAO.getSucursal(sucursal);
		if(sucursal02 == null){
			throw new BlException("Esta sucursal no existe en el sitema");
		}
		
		Rol rol02 = rolDAO.getRol(rol);
		if(rol02 == null){
			throw new BlException("Esta rol no existe en el sitema");
		}
		
		Usuario usuario02 = usuarioDAO.getUsuario(correo);
		if(usuario02 == null){
			throw new BlException("El usuario ya esta creado en el sistema");
		}
		
		Usuario usuario = new Usuario();
		usuario.setCiudad(ciudad);
		usuario.setCorreo(correo);
		usuario.setDepartamento(departamento);
		usuario.setDireccion(direccion);
		usuario.setNombreResponsable(nombreResponsable);
		usuario.setPais(pais);
		usuario.setPass(pass);
		usuario.setRol(rol02);
		usuario.setSucursal(sucursal02);
		usuario.setTelefono(telefono);
		usuario.setTipoId(tipoId);
		
		usuarioDAO.guardarUsuario(usuario);
	}

	@Override
	public Usuario getUsuario(String correo) throws DaoException, BlException {
		
		return usuarioDAO.getUsuario(correo);
	}

}
